<?php 
namespace Admin\Model;
use Think\Model;
class UserModel extends Model {
	// 添加时调用create方法允许接收的字段
	protected $insertFields = 'loginname,username,pass,did,sid,gid,tid,roleid';
   	public function login()
	{
		// 从模型中取得用户提交用户名和密码
		$username = $this->loginname;
		$password = $this->pass;

		// 先根据用户查询管理员表
		$user = $this->where(array(
			'loginname' => array('eq', $username),
		))->find();
		if($user)
		{
			// 判断密码
			if($user['pass'] == md5($password))
			{  
				// 把信息存到session中
				session('userid', $user['userid']);
				session('username', $user['username']);
				session('roleid',$user['roleid']);
				session('did',$user['did']);
				session('sid',$user['sid']);
				session('gid',$user['gid']);
				session('tid',$user['tid']);
				return TRUE;
			}
			else 
			{
				$this->error = '密码不正确！';
				return FALSE;
			}
		}
		else 
		{
			$this->error = '账号不存在！';
			return FALSE;
		}
	}

	//注测前把密码加密
	protected function _before_insert(&$data, $option)
	{
		$data['pass'] = md5($data['pass']);
	}

	// 判断是否有权访问当前这个页面
	public function chkPri()
	{
		$roleid = session('roleid');
		  
		 if(MODULE_NAME == 'Admin' && CONTROLLER_NAME == 'Index')
			return TRUE;
		
			$sql = 'SELECT COUNT(*) has FROM `cms_role_pri` a LEFT JOIN `cms_privilege` b ON a.priid=b.id WHERE a.roleid='.$roleid.' AND modulename="'.MODULE_NAME.'"'.' AND controllername="'.CONTROLLER_NAME.'"'.' AND actionname="'.ACTION_NAME.'"';
			$has = $this->query($sql);  // 返回的是二维数组
			return ($has[0]['has'] > 0);  //返回真假
	}
	// 获取当前管理员有权限访问的按钮
	// 原理：把前两级的权限当作按钮
	public function getPriBtn()
	{
		// 取出当前管理员拥有的前两级的权限
		// 先取出所有的
		$allPriData = $this->getAllPri();

		// 从所有的权限中提取出前两级的
		$btn = array();
	

		foreach ($allPriData as $k => $v)
		{
			// var_dump($v['parentid']);
			if($v['parentid'] == 0)
			{
				// 再找这个顶级的下一级的
				foreach ($allPriData as $k1 => $v1)
				{
					if($v1['parentid'] == $v['id'])
					{
						// 把子权限放到顶级权限的children字段中
						$v['children'][] = $v1;
					}
				}
				$btn[] = $v;
			}
		}

		return $btn;
	}
	// 获取当前管理员所拥有的所有的权限
	public function getAllPri()
	{
		// 获取当前管理员的id
		$roleid = session('roleid');
		
			// 根据管理员ID取出权限：
		//流程：1.先根据管理员ID取出这个管理员所在的角色ID  2. 再取出这些角色所拥有的权限的ID 3. 再从权限表取出这些权限的信息
			$sql = 'SELECT DISTINCT b.id,b.priname,b.parentid,b.modulename,b.controllername,b.actionname FROM `cms_role_pri` a LEFT JOIN `cms_privilege` b ON a.priid=b.id WHERE a.roleid='.$roleid;
			$priData = $this->query($sql);
		return $priData;
	}
}